home *** CD-ROM | disk | FTP | other *** search
/ Rockford Magazine / Rockford_Magazine_037_19xx_-_de_Side_A.d64 / prn->file anl. < prev    next >
Text File  |  2023-02-26  |  6KB  |  238 lines

  1.             Prn -> File V3.1
  2.             ----------------
  3.  
  4. Prn -> File ist ein kleines Tool zum AssBlaster 3.1 (die RUN-Version). Das Tool lenkt die Druckerausgabe in eine Datei um. So ist es moeglich aus dem Quelltext, der ja in einem speziellen, platzsparenden Format im Speicher vor- liegt, einen ASCII-Text zu machen, den man dann z.B. in einer Textverarbeitung weiterbearbeiten, oder mit einem Druck- programm mehrspaltig ausdrucken kann um Papier zu sparen. Als Dateiname wird dabei automatisch der Name benutzt, den der AB zuletzt verwendet hat. Die Endung '.SRC' wird automatisch durch '.ASC' ersetzt.
  5.  
  6.  
  7. Gestartet wird das Programm wie folgt:
  8.  
  9. 1. AssBlaster laden (und starten).
  10. 2. Prn->FileV3.1 absolut laden.
  11. 3. mit SYS 50000 starten.
  12.  
  13. Das Tool klinkt sich dann in den NEW- Vektor, den OPEN-Vektor und den BASOUT- Vektor ein.
  14.  
  15. Leider funktioniert das Programm in dieser Form nur beim AssBlaster V3.1, es laesst sich aber relativ einfach an die Vorgaenger und evt. auch an folgen- de Versionen anpassen, da der Quellcode im AB3.1 Format mit auf der Diskette ist.
  16. Bei den bisherigen AB-Versionen musste man nur zwei Stellen im Programm aendern:
  17.  
  18.   1. Die Adresse wo der AB sich den Da- teinamen merkt. Das war bisher immer sehr nahe am Anfang des Programms. Am besten man gibt im AB einen Dateinamen mit <CTRL+N> ein, z.B. "hallo" und sucht diesen dann mit einem Monitor. Die so ermittelte Adresse muss dann bei dem Label abfilename=$???? eingetragen werden.
  19.  
  20.   2. Die Startadresse des AB. Hier ge- nuegt ein einfaches LIST um die Adresse herauszufinden. Die Zahl, die nach dem SYS-Befehl erscheint muss in den JMP- Befehl eingesetzt werden, wo im Listing die Bemerkung ';AB3.1' steht.
  21.  
  22.  
  23. Als Anwendungsbeispiel folgt nun das Listing als ASCII-Text, der mit dem Tool erzeugt wurde:
  24.  
  25.  \ba 50000
  26. ;---------------------------------------
  27. ;           Prn -> File V3.1
  28. ;          {CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}
  29. ; 02061995-25021996 / (W) by M. Rintsch
  30. ;---------------------------------------
  31. ;Mit dem Programm kann man die Drucker-
  32. ;ausgabe von AssBlaster in eine ASCII-
  33. ;Datei umleiten. Die Textdatei erhaelt
  34. ;automatisch den aktuellen Filenamen.
  35. ;
  36. ;Mit SYS 50000 wird das Programm akti-
  37. ;viert, d.h. es klinkt sich in folgende
  38. ;Vektoren ein: OPEN, CLOSE & OUTPUT.
  39.  
  40.  \la device=$ba
  41.  \la lf=$b8
  42.  
  43.  \la openvector=$031a
  44.  \la charoutvector=$0326
  45.  \la closevector=$031c
  46.  
  47.  \la oldcharout=$f1ca
  48.  \la oldclose=$f291
  49.  
  50. ;Adresse des aktuellen Filenamens im
  51. ;AssBlaster V3.1:
  52.  \la abfilename=$081a
  53.  
  54. ;---------------------------------------
  55. install:
  56.  
  57. ;Testen ob Programm bereits installiert
  58. ;wurde
  59.           lda openvector+1
  60.           cmp #>newopen
  61.           beq installend
  62.  
  63. ;Alten OPEN-Vector retten
  64.           ldx openvector
  65.           ldy openvector+1
  66.           stx oldvector
  67.           sty oldvector+1
  68.  
  69. ;OPEN-Vector auf neue Routine setzen
  70.           ldx #<newopen
  71.           ldy #>newopen
  72.           stx openvector
  73.           sty openvector+1
  74.  
  75. ;CLOSE-Vector auf neue Routine setzen
  76.           ldx #<newclose
  77.           ldy #>newclose
  78.           stx closevector
  79.           sty closevector+1
  80.  
  81. ;CHAROUT-Vektor auf neue Routine setzen
  82.           ldx #<newcharout
  83.           ldy #>newcharout
  84.           stx charoutvector
  85.           sty charoutvector+1
  86.  
  87.           lda #0
  88.           sta bufferptr
  89.           sta printflag
  90.  
  91. installend:
  92.           jmp 7646        ;AB3.1 starten
  93.  
  94. ;---------------------------------------
  95. newopen:
  96.  
  97. ;Testen ob sich das OPEN auf den Drucker
  98. ;bezieht
  99.           lda device
  100.           cmp #4
  101.           bne newopenend
  102.  
  103. ;Device auf Floppy aendern
  104.           lda #8
  105.           sta device
  106.           lda #1
  107.           sta $b9
  108.  
  109. ;logische Filenummer merken
  110.           lda lf
  111.           sta modtemplf+1
  112.  
  113. ;Filenamen von AssBlaster uebernehmen
  114.           ldx #12
  115. newopen1:
  116.           lda abfilename,x
  117.           sta filename,x
  118.           dex
  119.           bpl newopen1
  120.  
  121.           lda #20
  122.           ldx #<filename
  123.           ldy #>filename
  124.           jsr $ffbd
  125.  
  126.           lda #0
  127.           sta bufferptr
  128.  
  129. ;'printflag' setzen
  130.           lda #$ff
  131.           sta printflag
  132.  
  133.           dec $d020
  134.  
  135. newopenend:
  136.           jmp (oldvector)
  137. ;---------------------------------------
  138. newcharout:
  139.  
  140. ;Akku & X-Register sichern
  141.           sta tempa
  142.           stx tempx
  143.  
  144. ;Test ob Druckfile oder normale Ausgabe
  145.           ldx printflag
  146.           beq newcharoutend
  147.  
  148. modtemplf:
  149.           ldx #0
  150.           cpx lf
  151.           bne newcharoutend
  152.  
  153. ;Zeichen in Druckpuffer ablegen
  154.           ldx bufferptr
  155.           sta buffer,x
  156.           inc bufferptr
  157.  
  158. ;Wenn Zeichen = 'CR' dann Zeile ausgeben
  159.           cmp #13
  160.           bne newcharout3
  161.  
  162.           dec $d020
  163.  
  164. ;Spaces am Zeilenende eleminieren
  165. newcharout1:
  166.           dex
  167.           lda buffer,x
  168.           cmp #" "
  169.           beq newcharout1
  170.  
  171.           inx
  172.           lda #13
  173.           sta buffer,x
  174.  
  175. ;Druckpuffer ausgeben
  176.           ldx #1
  177. newcharout2:
  178.           lda buffer,x
  179.           jsr oldcharout
  180.           inx
  181.           cmp #13
  182.           bne newcharout2
  183.  
  184. ;Druckpuffer 'loeschen'
  185.           lda #0
  186.           sta bufferptr
  187.  
  188.           inc $d020
  189.  
  190. newcharout3:
  191.           lda tempa
  192.           ldx tempx
  193.  
  194.           rts
  195. newcharoutend:
  196. ;Akku & X-Register wiederherstellen
  197.           lda tempa
  198.           ldx tempx
  199.  
  200.           jmp oldcharout
  201. ;---------------------------------------
  202. newclose:
  203.  
  204. ;Test ob Druckfile oder normale Datei
  205. ;geschlossen werden soll
  206.           ldx printflag
  207.           beq newcloseend
  208.  
  209. ;'printflag' loeschen
  210.           ldx #0
  211.           stx printflag
  212.  
  213.           inc $d020
  214.  
  215. newcloseend:
  216.           jmp oldclose
  217. ;---------------------------------------
  218. ;Variablen:
  219.  
  220. oldvector:
  221.  \wo 0
  222.  
  223. filename:
  224.  \tx "            .asc,s,w"
  225.  
  226. bufferptr:
  227.  \by 0
  228.  
  229. tempa:
  230.  \by 0
  231. tempx:
  232.  \by 0
  233.  
  234. printflag:
  235.  \by 0
  236.  
  237. buffer:
  238.